﻿#include <stdio.h>

int main()
{
	int m = 10; 
	int n = 10;
	int num1 = 2;
	int num2 = 4;
	printf("%zd\n", sizeof(m));
	printf("%zd\n", sizeof m);
	printf("%zd\n", sizeof 2 + 3);//先算sizeof(2)，再加3
	printf("%zd\n", sizeof(2 + 3));

	int b = num1 + num2;
	int c = num1 - num2;
	int d = num1 * num2;
	int e = num1 / num2;
	float x = 6 / 4;
	int y = 6 / 4;
	float z = 6.0 / 4;
	printf("%f\n", x); // 输出 1.000000尽管变量 x 的类型是 float （浮点数），但是 6 / 4 得到的结果是 1.0 ，⽽不是1.5 。原因就在于 C 语⾔⾥⾯的整数除法是整除，只会返回整数部分，丢弃⼩数部分。
	printf("%d\n", y); // 输出 1
	printf("%f\n", z); // 输出 1.500000 因为 6.0 / 4 是浮点数除法，结果是 1.5  如果希望得到浮点数的结果，两个运算数必须⾄少有⼀个浮点数，这时 C 语⾔就会进⾏浮点数除法。
	printf("%d\n", b);
	printf("%d\n", c);
	printf("%d\n", d);
	printf("%d\n", e);

	int f = m--;//先使用a的值，然后再将a减 1
	int g = --n; //先将y减 1，然后再使用y的值
	printf("%d\n", m); // 输出 9
	printf("%d\n", f); // 输出 10
	printf("%d\n", g); // 输出 9
	printf("%d\n", n); // 输出 9
	int ch = getchar();
	putchar(ch);//printf("%c\n", ch); // 输出输入的字符
	printf("\n");

	printf("%s says it is %d o'clock\n","lisi",19);

	printf("%+d\n", 12);//输出"+12"
	printf("%+d\n", -12);//输出"-12"

	printf("%5d\n", 123);//输出"  123"，总宽度为5，数字右对齐，左边补空格。超过5位正常打印
	printf("%-5d\n", 123);//输出"123  "，总宽度为5，数字左对齐，右边补空格。
	printf("%12f\n", 123.45);
	printf("%.2f\n", 123.4567);
	printf("%10.3f\n", 123.4567);//总宽度为8，保留两位小数，数字右对齐，左边补空格
	printf("%*.*f\n", 6, 2, 0.5);//%*.*f 的两个星号通过 printf() 的两个参数 6 和 2 传⼊。
	printf("%.5s\n", "hello world");//输出"hello"，只打印前5个字符
	
	
	return 0;
}